home *** CD-ROM | disk | FTP | other *** search
Wrap
property spriteNum, mySprite, myOffMember, myOffOverMember, myOffDownMember, myOffCommand, myOnMember, myOnOverMember, myOnDownMember, myOnCommand, theMouseWasUp, myRollover, myState, ourID, ourGroupList, ourMouseDown on getBehaviorDescription me return "MULTISTATE TOGGLE BUTTON" & RETURN & RETURN & "This behavior toggles the sprite it is attached to between two states: OFF and ON. " & "In each state, the member of the sprite is set according to the position of the mouse (elsewhere, rollover, mouseDown)." & RETURN & "The behavior returns the current state of the button in response to a #ToggleButton_State call." & RETURN & RETURN & "RADIO BUTTON GROUP" & RETURN & "To create a group of radio buttons, give each button in the same group the same ID. " & "Switching one button in the group on will switch all others off." & RETURN & RETURN & "PERMITTED MEMBER TYPES" & RETURN & "Graphic" & RETURN & RETURN & "PARAMETERS:" & RETURN & "-- OFF state --" & RETURN & "* Standard member (when mouse is elsewhere)" & RETURN & "* Rollover member" & RETURN & "* MouseDown member" & RETURN & "-- ON state --" & RETURN & "* Standard member" & RETURN & "* Rollover member" & RETURN & "* MouseDown member" & RETURN & "-- COMMAND --" & RETURN & "* Sent when the button is switched ON" & RETURN & "* Sent when the button is switched OFF" & RETURN & "-- Optional --" & RETURN & "* Toggle group ID (to create a group of radio buttons)" & RETURN & RETURN & "If members are placed consecutively in the cast in this order then default values can be used to create the button." end on getBehaviorTooltip me return "Create an ON/OFF button which reacts to rollovers and clicks. " & "Use several such buttons together as a radio button group." end on beginSprite me Initialize(me) end on endSprite me ourGroupList.deleteOne(me) end on prepareFrame me CheckForRollover(me) end on mouseDown me clickOn(me) end on mouseUp me if ourMouseDown[1] then Toggle(me) end if end on mouseUpOutSide me CheckGroupForClick(me) end on Initialize me mySprite = sprite(me.spriteNum) ourGroupList = [] myOffMember = member(myOffMember) myOffOverMember = member(myOffOverMember) myOffDownMember = member(myOffDownMember) myOnMember = member(myOnMember) myOnOverMember = member(myOnOverMember) myOnDownMember = member(myOnDownMember) sendAllSprites(#ToggleButton_GroupRollCall, ourID, ourGroupList) call(#ToggleButton_MouseDownList, ourGroupList, [0]) end on CheckForRollover me mouseOverMe = the rollover = me.spriteNum if myRollover = mouseOverMe then if theMouseWasUp = the mouseUp then exit else theMouseWasUp = the mouseUp if mouseOverMe then if the mouseUp then case myState of 1: mySprite.member = myOnOverMember 0: mySprite.member = myOffOverMember end case end if end if end if else myRollover = mouseOverMe if ourMouseDown[1] then if myRollover then case myState of 1: mySprite.member = myOnDownMember 0: mySprite.member = myOffDownMember end case else case myState of 1: mySprite.member = myOnMember 0: mySprite.member = myOffMember end case end if else if not (the mouseDown) and myRollover then case myState of 1: mySprite.member = myOnOverMember 0: mySprite.member = myOffOverMember end case else case myState of 1: mySprite.member = myOnMember 0: mySprite.member = myOffMember end case end if end if end if end on clickOn me ourMouseDown[1] = 1 case myState of 1: mySprite.member = myOnDownMember 0: mySprite.member = myOffDownMember end case end on Toggle me, whichState if voidp(whichState) then myState = not myState else myState = whichState end if ourMouseDown[1] = 0 theMouseWasUp = 1 case myState of 1: mySprite.member = myOnMember updateStage() do(myOnCommand) 0: mySprite.member = myOffMember updateStage() do(myOffCommand) end case if ourGroupList.count() then if myState then call(#ToggleButton_Off, ourGroupList, me) end if end if end on CheckGroupForClick me groupRollover = call(#ToggleButton_Rollover, ourGroupList, []) if not groupRollover.count() then ourMouseDown[1] = 0 end if end on ToggleButton_GroupRollCall me, groupID, groupList if groupID = ourID then ourGroupList = groupList ourGroupList.append(me) end if return groupList end on ToggleButton_MouseDownList me, mouseDownList ourMouseDown = mouseDownList end on ToggleButton_Rollover me, theList if the rollover = me.spriteNum then theList.append(me.spriteNum) end if return theList end on ToggleButton_Off me, callingBehavior if callingBehavior = me then exit end if Toggle(me, 0) end on ToggleButton_State me, groupID, statesList if not voidp(groupID) then if groupID <> ourID then exit end if end if case ilk(statesList) of #void: return myState #list: statesList.append(myState) #propList: statesList.addProp(me.spriteNum, myState) end case return statesList end on ToggleButton_ActiveButton me, groupID, theList if not voidp(groupID) then if groupID <> ourID then exit end if end if if not listp(theList) then theList = [:] end if if not theList.count() and myState then theList.addProp(#sprite, me.spriteNum) theList.addProp(#behavior, me) end if return theList end on isOKToAttach me, aSpriteType, aSpriteNum tisok = 0 if aSpriteType = #graphic then tisok = 1 end if return tisok end on getPropertyDescriptionList me theMember = sprite(the currentSpriteNum).member theMemberNum = theMember.number return [#myOffMember: [#comment: "-OFF STATE- Standard member:", #format: #graphic, #default: theMember], #myOffOverMember: [#comment: "Rollover member", #format: #graphic, #default: member(theMemberNum + 1)], #myOffDownMember: [#comment: "MouseDown member", #format: #graphic, #default: member(theMemberNum + 2)], #myOnMember: [#comment: "-ON STATE- Standard member", #format: #graphic, #default: member(theMemberNum + 3)], #myOnOverMember: [#comment: "Rollover member", #format: #graphic, #default: member(theMemberNum + 4)], #myOnDownMember: [#comment: "MouseDown member", #format: #graphic, #default: member(theMemberNum + 5)], #myOnCommand: [#comment: "-COMMAND SENT- when switched ON", #format: #string, #default: "sendAllSprites #Toggle_On, the currentSpriteNum"], #myOffCommand: [#comment: "when switched OFF", #format: #string, #default: "sendAllSprites #Toggle_Off, the currentSpriteNum"], #ourID: [#comment: "ID string for the group", #format: #string, #default: EMPTY]] end